package Datos;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import Clases.Turno;

public class TurnoAdapter extends Database {
	
	public Boolean Insert(Turno tur)
	{
		String select = "select * from turnos where idProfesional="+tur.getIdProfesional()+" and horario="+quotes(tur.getHorario())+
				" and fecha="+quotes(tur.getFecha())+";";
		ResultSet rs = super.Select(select);
		try{
		if(!rs.next()){
		String sql = "insert into `turnos` (`idProfesional`, `horario`, `motivo`, `observaciones`, `nombreCliente`, `fecha`) VALUES ("+
					tur.getIdProfesional()+","+quotes(tur.getHorario())+","+quotes(tur.getMotivo())+","+quotes(tur.getObservaciones())+","+
				quotes(tur.getCliente())+","+quotes(tur.getFecha())+");";
		super.runSqlStatement(sql);
		return true;
		}
		else return false;
		}
		catch(Exception e)
		{
			return false;
		}
	}
	
	public Boolean Update(Turno tur)
	{
		String select = "select * from turnos where idProfesional="+tur.getIdProfesional()+" and horario="+quotes(tur.getHorario()) +
				" and `idTurno`<>"+tur.getId()+" and fecha="+quotes(tur.getFecha())+";";
		ResultSet rs = super.Select(select);
		try{
			if(!rs.next()) {
		
		String sql = "UPDATE `turnos` SET " +
		  		"`idProfesional`="+tur.getIdProfesional()+",`horario`="+quotes(tur.getHorario())+",`motivo`="+
		  		quotes(tur.getMotivo())+"," +
		  		"`observaciones`="+quotes(tur.getObservaciones())+ ", `fecha`="+quotes(tur.getFecha())+
		  		",`nombreCliente`="+quotes(tur.getCliente())+" WHERE `idTurno`="+tur.getId()+";";
		  super.runSqlStatement(sql);
		  return true;
			}
			else return false;
		}
		catch(SQLException ex)
		{
			ex.getMessage();
			return false;
		}
	}
	public void Delete(int id)
	{
		  String sql = "DELETE FROM `turnos` WHERE idTurno="+id+";";
		   super.runSqlStatement(sql);
	}
	public Turno getTurno(int id)
	{
		Turno turno = new Turno();
		String select = "select * from turnos where idTurno="+id;
		ResultSet rs = super.Select(select);
		try{
			if(rs.next())
			{
				turno.setId(rs.getInt("idTurno"));
				turno.setIdProfesional(rs.getInt("idProfesional"));
				turno.setHorario(rs.getString("horario"));
				turno.setFecha(rs.getString("fecha"));
				turno.setCliente(rs.getString("nombreCliente"));
				turno.setMotivo(rs.getString("Motivo"));
				turno.setObservaciones(rs.getString("observaciones"));
			}
		}
		catch(Exception ex)
		{ex.getMessage();
			}
		return turno;
	}
	public ArrayList<Turno> getAllTurnosPorFecha(String fecha, int idProf)
	{
		ArrayList<Turno> turnos = new ArrayList<Turno>();
		String select = "select * from turnos t natural join profesionales p where t.fecha >= CURDATE() AND t.idProfesional="+idProf+" ORDER BY t.fecha ASC;";
		if(!fecha.equals(""))select = "select * from turnos t natural join profesionales p where t.fecha ='"+fecha+"' AND t.idProfesional="+idProf+" ORDER BY t.fecha ASC;";
		
		ResultSet rs = super.Select(select);
		try{
		while(rs.next())
		{
			Turno tur = new Turno();
			tur.setId(rs.getInt("idTurno"));
			tur.setIdProfesional(rs.getInt("idProfesional"));
			tur.setCliente(rs.getString("t.nombreCliente"));
			tur.setObservaciones(rs.getString("t.observaciones"));
			tur.setMotivo(rs.getString("t.motivo"));
			tur.setFecha(rs.getString("t.fecha"));
			tur.setHorario(rs.getString("t.horario"));
			tur.setNomProfesional(rs.getString("p.apellido")+", "+rs.getString("p.nombre"));
			turnos.add(tur);
		}
		}
		catch(Exception ex)
		{ ex.getMessage();}
		return turnos;
	}
	
	public ArrayList<Turno> getAllTurnos(int idProf)
	{
		ArrayList<Turno> turnos = new ArrayList<Turno>();
		String select = "select * from turnos t natural join profesionales p where t.fecha >= CURDATE() and idProfesional="+idProf+" ORDER BY t.fecha ASC";
		
		ResultSet rs = super.Select(select);
		try{
		while(rs.next())
		{
			Turno tur = new Turno();
			tur.setId(rs.getInt("idTurno"));
			tur.setIdProfesional(rs.getInt("idProfesional"));
			tur.setCliente(rs.getString("t.nombreCliente"));
			tur.setObservaciones(rs.getString("t.observaciones"));
			tur.setMotivo(rs.getString("t.motivo"));
			tur.setFecha(rs.getString("t.fecha"));
			tur.setHorario(rs.getString("t.horario"));
			tur.setNomProfesional(rs.getString("p.apellido")+", "+rs.getString("p.nombre"));
			turnos.add(tur);
		}
		}
		catch(Exception ex)
		{ ex.getMessage();}
		return turnos;
	}
	
	public ArrayList<Turno> getAllTurnosPorSecretaria(int idSec)
	{
		ArrayList<Turno> turnos = new ArrayList<Turno>();
		String select = "select * from turnos t natural join profesionales p where t.fecha >= CURDATE() and idSecretaria="+idSec+" ORDER BY t.fecha ASC";
		
		ResultSet rs = super.Select(select);
		try{
		while(rs.next())
		{
			Turno tur = new Turno();
			tur.setId(rs.getInt("idTurno"));
			tur.setIdProfesional(rs.getInt("idProfesional"));
			tur.setCliente(rs.getString("t.nombreCliente"));
			tur.setObservaciones(rs.getString("t.observaciones"));
			tur.setMotivo(rs.getString("t.motivo"));
			tur.setFecha(rs.getString("t.fecha"));
			tur.setHorario(rs.getString("t.horario"));
			tur.setNomProfesional(rs.getString("p.apellido")+", "+rs.getString("p.nombre"));
			turnos.add(tur);
		}
		}
		catch(Exception ex)
		{ ex.getMessage();}
		return turnos;
	}
	
	public int Count()
	{
		int cont=0;
		String sql = "select count(*) as cuenta from turnos;";
		ResultSet rs = super.Select(sql);
		try{
		if(rs.next())
		{
		cont= rs.getInt("cuenta"); return cont;
		}
		
		else return cont;
		}
		catch(SQLException ex)
		{ex.getMessage(); return cont;}
	}

}
